#ifndef _WT_PTR_OBJ_H
#define _WT_PTR_OBJ_H

typedef struct WtPtrStateT {
  Tcl_Obj *id;
} WtPtrState;

void WtInitPtrRegistry(WtContext *w);
void WtDeletePtrRegistry(WtContext *w);
Tcl_Obj *WtGetPtrById(Tcl_Obj *id, Tcl_ObjType *type);
Tcl_Obj *WtGetPtr(Tcl_Obj *obj, Tcl_ObjType *type);
void WtSetPtrId(Tcl_Obj *obj, const char *bytes, int len);
void WtSetPtrIdObj(Tcl_Obj *obj, Tcl_Obj *id);
void WtDeletePtrId(Tcl_Obj *obj);
void WtDeletePtr(Tcl_Obj *obj);
void WtUpdatePtrString(Tcl_Obj *);
int WtSetPtrFromAny(Tcl_Interp *interp, Tcl_Obj *obj, Tcl_ObjType *type);

#endif /* ! _WT_PTR_OBJ_H */
